Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial implementation of camera-controller app #37835

Merged
merged 3 commits into from
Mar 5, 2025

Conversation

yufengwangca
Copy link
Contributor

@yufengwangca yufengwangca commented Mar 3, 2025

This is the initial implementation of camera-controller app running on a Linux platform.

In a typical setup, the Camera Controller app manages a CameraDevice app running on a Raspberry Pi. The CameraDevice captures and encodes the video feed before streaming it through a WebRTC track, while the CameraController receives this video stream and displays it, creating a complete end-to-end camera solution.

Note: The initial version is inherited from chip-tool, with no camera-related features added.

Testing

Build is validated by CI

Pairing Camera device app from Camera Controller

1. Start Camera App
./chip-camera-app

2. Start Camera Controller
./out/linux-x64-camera-controller/camera-controller
>>> pairing code 1 34970112332

@github-actions github-actions bot added documentation Improvements or additions to documentation examples scripts github workflows labels Mar 3, 2025
Copy link

github-actions bot commented Mar 3, 2025

PR #37835: Size comparison from b205837 to be616c7

Full report (58 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section b205837 be616c7 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1096868 1096866 -2 -0.0
RAM 94842 94842 0 0.0
bl702 lighting-app bl702+eth FLASH 651842 651842 0 0.0
RAM 33509 33509 0 0.0
bl702+wifi FLASH 829114 829114 0 0.0
RAM 22233 22233 0 0.0
bl706+mfd+rpc+littlefs FLASH 1061510 1061508 -2 -0.0
RAM 32157 32157 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 892354 892352 -2 -0.0
RAM 26896 26896 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 975250 975248 -2 -0.0
RAM 24644 24644 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 817232 817232 0 0.0
RAM 120272 120272 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 826152 826152 0 0.0
RAM 125368 125368 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 773036 773036 0 0.0
RAM 113740 113740 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 757312 757312 0 0.0
RAM 113948 113948 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 540774 540774 0 0.0
RAM 205128 205128 0 0.0
lock CC3235SF_LAUNCHXL FLASH 574890 574890 0 0.0
RAM 205376 205376 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 658941 658941 0 0.0
RAM 75412 75412 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 678801 678801 0 0.0
RAM 78052 78052 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 678801 678801 0 0.0
RAM 78052 78052 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 635725 635725 0 0.0
RAM 70480 70480 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 619181 619181 0 0.0
RAM 71652 71652 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 638817 638817 0 0.0
RAM 74196 74196 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 638817 638817 0 0.0
RAM 74196 74196 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 638669 638669 0 0.0
RAM 74660 74660 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 658393 658393 0 0.0
RAM 77204 77204 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 658393 658393 0 0.0
RAM 77204 77204 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 615009 615009 0 0.0
RAM 68748 68748 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 634869 634869 0 0.0
RAM 71388 71388 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 634869 634869 0 0.0
RAM 71388 71388 0 0.0
efr32 lock-app BRD4187C FLASH 939760 939760 0 0.0
RAM 159920 159920 0 0.0
BRD4338a FLASH 732744 732744 0 0.0
RAM 234828 234828 0 0.0
window-app BRD4187C FLASH 1032200 1032200 0 0.0
RAM 128024 128024 0 0.0
esp32 all-clusters-app c3devkit DRAM 98736 98736 0 0.0
FLASH 1591774 1591774 0 0.0
IRAM 83820 83820 0 0.0
m5stack DRAM 117516 117516 0 0.0
FLASH 1558614 1558614 0 0.0
IRAM 117039 117039 0 0.0
linux chip-tool-ipv6only arm64 unknown 21976 21976 0 0.0
FLASH 11498104 11498104 0 0.0
RAM 656136 656136 0 0.0
thermostat-no-ble arm64 unknown 9448 9448 0 0.0
FLASH 4141896 4141896 0 0.0
RAM 229840 229840 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 913684 913684 0 0.0
RAM 142909 142909 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 904428 904428 0 0.0
RAM 125245 125245 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 850464 850464 0 0.0
RAM 141271 141271 0 0.0
nxp contact k32w0+release FLASH 587456 587456 0 0.0
RAM 70980 70980 0 0.0
mcxw71+release FLASH 601272 601272 0 0.0
RAM 63096 63096 0 0.0
light k32w0+release FLASH 613188 613188 0 0.0
RAM 70268 70268 0 0.0
k32w1+release FLASH 685896 685896 0 0.0
RAM 48584 48584 0 0.0
lock mcxw71+release FLASH 750112 750112 0 0.0
RAM 67500 67500 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1658236 1658236 0 0.0
RAM 212344 212344 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1562476 1562476 0 0.0
RAM 208560 208560 0 0.0
light cy8ckit_062s2_43012 FLASH 1441276 1441276 0 0.0
RAM 197296 197296 0 0.0
lock cy8ckit_062s2_43012 FLASH 1470164 1470164 0 0.0
RAM 224960 224960 0 0.0
qpg lighting-app qpg6105+debug FLASH 663852 663852 0 0.0
RAM 105156 105156 0 0.0
lock-app qpg6105+debug FLASH 622312 622312 0 0.0
RAM 99768 99768 0 0.0
stm32 light STM32WB5MM-DK FLASH 459920 459920 0 0.0
RAM 141472 141472 0 0.0
telink bridge-app tl7218x FLASH 669270 669270 0 0.0
RAM 90752 90752 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 622132 622132 0 0.0
RAM 31488 31488 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 760918 760918 0 0.0
RAM 40420 40420 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 754026 754026 0 0.0
RAM 97540 97540 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 681076 681076 0 0.0
RAM 52192 52192 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 709634 709634 0 0.0
RAM 73400 73400 0 0.0
light-switch-app-ota-shell-factory-data tl3218x_retention FLASH 702184 702184 0 0.0
RAM 37664 37664 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 601750 601750 0 0.0
RAM 137360 137360 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 789042 789042 0 0.0
RAM 96388 96388 0 0.0
tizen all-clusters-app arm unknown 5144 5144 0 0.0
FLASH 1770756 1770756 0 0.0
RAM 94152 94152 0 0.0
chip-tool-ubsan arm unknown 11492 11492 0 0.0
FLASH 18984862 18984862 0 0.0
RAM 8306668 8306668 0 0.0

Copy link

github-actions bot commented Mar 3, 2025

PR #37835: Size comparison from b205837 to c1b95fd

Full report (74 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section b205837 c1b95fd change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1096868 1096866 -2 -0.0
RAM 94842 94842 0 0.0
bl702 lighting-app bl702+eth FLASH 651842 651842 0 0.0
RAM 33509 33509 0 0.0
bl702+wifi FLASH 829114 829114 0 0.0
RAM 22233 22233 0 0.0
bl706+mfd+rpc+littlefs FLASH 1061510 1061508 -2 -0.0
RAM 32157 32157 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 892354 892352 -2 -0.0
RAM 26896 26896 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 975250 975248 -2 -0.0
RAM 24644 24644 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 817232 817232 0 0.0
RAM 120272 120272 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 826152 826152 0 0.0
RAM 125368 125368 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 773036 773036 0 0.0
RAM 113740 113740 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 757312 757312 0 0.0
RAM 113948 113948 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 540774 540774 0 0.0
RAM 205128 205128 0 0.0
lock CC3235SF_LAUNCHXL FLASH 574890 574890 0 0.0
RAM 205376 205376 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 658941 658941 0 0.0
RAM 75412 75412 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 678801 678801 0 0.0
RAM 78052 78052 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 678801 678801 0 0.0
RAM 78052 78052 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 635725 635725 0 0.0
RAM 70480 70480 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 619181 619181 0 0.0
RAM 71652 71652 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 638817 638817 0 0.0
RAM 74196 74196 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 638817 638817 0 0.0
RAM 74196 74196 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 638669 638669 0 0.0
RAM 74660 74660 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 658393 658393 0 0.0
RAM 77204 77204 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 658393 658393 0 0.0
RAM 77204 77204 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 615009 615009 0 0.0
RAM 68748 68748 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 634869 634869 0 0.0
RAM 71388 71388 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 634869 634869 0 0.0
RAM 71388 71388 0 0.0
efr32 lock-app BRD4187C FLASH 939760 939760 0 0.0
RAM 159920 159920 0 0.0
BRD4338a FLASH 732744 732744 0 0.0
RAM 234828 234828 0 0.0
window-app BRD4187C FLASH 1032200 1032200 0 0.0
RAM 128024 128024 0 0.0
esp32 all-clusters-app c3devkit DRAM 98736 98736 0 0.0
FLASH 1591774 1591774 0 0.0
IRAM 83820 83820 0 0.0
m5stack DRAM 117516 117516 0 0.0
FLASH 1558614 1558614 0 0.0
IRAM 117039 117039 0 0.0
linux air-purifier-app debug unknown 4752 4752 0 0.0
FLASH 2653563 2653579 16 0.0
RAM 112304 112304 0 0.0
all-clusters-app debug unknown 5560 5560 0 0.0
FLASH 5973952 5974000 48 0.0
RAM 516568 516568 0 0.0
all-clusters-minimal-app debug unknown 5456 5456 0 0.0
FLASH 5299954 5300002 48 0.0
RAM 222488 222488 0 0.0
bridge-app debug unknown 5472 5472 0 0.0
FLASH 4652302 4652350 48 0.0
RAM 201344 201344 0 0.0
camera-app debug unknown 5456 5456 0 0.0
FLASH 4675470 4675486 16 0.0
RAM 195792 195792 0 0.0
chip-tool debug unknown 6112 6112 0 0.0
FLASH 13305215 13305263 48 0.0
RAM 603456 603456 0 0.0
chip-tool-ipv6only arm64 unknown 21976 21976 0 0.0
FLASH 11498104 11498120 16 0.0
RAM 656136 656136 0 0.0
fabric-admin debug unknown 5800 5800 0 0.0
FLASH 11569977 11570025 48 0.0
RAM 603240 603240 0 0.0
fabric-bridge-app debug unknown 4720 4720 0 0.0
FLASH 4455900 4455916 16 0.0
RAM 188168 188168 0 0.0
fabric-sync debug unknown 4976 4976 0 0.0
FLASH 5572853 5572901 48 0.0
RAM 471600 471600 0 0.0
lighting-app debug+rpc+ui unknown 6184 6192 8 0.1
FLASH 5519121 5519697 576 0.0
RAM 205168 205168 0 0.0
lock-app debug unknown 5424 5424 0 0.0
FLASH 4692152 4692168 16 0.0
RAM 192344 192344 0 0.0
ota-provider-app debug unknown 4760 4760 0 0.0
FLASH 4314330 4314346 16 0.0
RAM 181000 181000 0 0.0
ota-requestor-app debug unknown 4712 4712 0 0.0
FLASH 4444682 4444698 16 0.0
RAM 185488 185488 0 0.0
shell debug unknown 4240 4240 0 0.0
FLASH 2982556 2982604 48 0.0
RAM 145688 145688 0 0.0
thermostat-no-ble arm64 unknown 9448 9448 0 0.0
FLASH 4141896 4141928 32 0.0
RAM 229840 229840 0 0.0
tv-app debug unknown 5752 5752 0 0.0
FLASH 5911733 5911749 16 0.0
RAM 595032 595032 0 0.0
tv-casting-app debug unknown 5320 5320 0 0.0
FLASH 11475709 11475725 16 0.0
RAM 718672 718672 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 913684 913684 0 0.0
RAM 142909 142909 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 904428 904428 0 0.0
RAM 125245 125245 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 850464 850464 0 0.0
RAM 141271 141271 0 0.0
nxp contact k32w0+release FLASH 587456 587456 0 0.0
RAM 70980 70980 0 0.0
mcxw71+release FLASH 601272 601272 0 0.0
RAM 63096 63096 0 0.0
light k32w0+release FLASH 613188 613188 0 0.0
RAM 70268 70268 0 0.0
k32w1+release FLASH 685896 685896 0 0.0
RAM 48584 48584 0 0.0
lock mcxw71+release FLASH 750112 750112 0 0.0
RAM 67500 67500 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1658236 1658236 0 0.0
RAM 212344 212344 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1562476 1562476 0 0.0
RAM 208560 208560 0 0.0
light cy8ckit_062s2_43012 FLASH 1441276 1441276 0 0.0
RAM 197296 197296 0 0.0
lock cy8ckit_062s2_43012 FLASH 1470164 1470164 0 0.0
RAM 224960 224960 0 0.0
qpg lighting-app qpg6105+debug FLASH 663852 663852 0 0.0
RAM 105156 105156 0 0.0
lock-app qpg6105+debug FLASH 622312 622312 0 0.0
RAM 99768 99768 0 0.0
stm32 light STM32WB5MM-DK FLASH 459920 459920 0 0.0
RAM 141472 141472 0 0.0
telink bridge-app tl7218x FLASH 669270 669270 0 0.0
RAM 90752 90752 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 622132 622132 0 0.0
RAM 31488 31488 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 760918 760918 0 0.0
RAM 40420 40420 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 754026 754026 0 0.0
RAM 97540 97540 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 681076 681076 0 0.0
RAM 52192 52192 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 709634 709634 0 0.0
RAM 73400 73400 0 0.0
light-switch-app-ota-shell-factory-data tl3218x_retention FLASH 702184 702184 0 0.0
RAM 37664 37664 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 601750 601750 0 0.0
RAM 137360 137360 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 789042 789042 0 0.0
RAM 96388 96388 0 0.0
tizen all-clusters-app arm unknown 5144 5144 0 0.0
FLASH 1770756 1770780 24 0.0
RAM 94152 94152 0 0.0
chip-tool-ubsan arm unknown 11492 11492 0 0.0
FLASH 18984862 18984886 24 0.0
RAM 8306668 8306668 0 0.0

@pidarped
Copy link
Contributor

pidarped commented Mar 4, 2025

@yufengwangca, wondering if we can link to the same sources from chip-tool (for the base part) in the camera-controller BUILD.gn file instead of making a copy of the sources in the camera-controller app.

@yufengwangca
Copy link
Contributor Author

yufengwangca commented Mar 4, 2025

@yufengwangca, wondering if we can link to the same sources from chip-tool (for the base part) in the camera-controller BUILD.gn file instead of making a copy of the sources in the camera-controller app.

If you compare the source code of these two example apps, you'll find significant differences. Chip-tool is much more complex, and I have removed a lot of code that is not relevant to the camera.

And we have not add any camera specific features yet, and that will make sharing code even harder.

@yufengwangca yufengwangca enabled auto-merge (squash) March 5, 2025 00:17
@yufengwangca yufengwangca merged commit 5becd81 into project-chip:master Mar 5, 2025
72 checks passed
@yufengwangca yufengwangca deleted the pr/camera/controller branch March 5, 2025 03:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants